<script>
     /*
            二、分场景详细说明：

                                    <1>、运行 DbMigrator 项目时 (推荐！ 生产环境必用)

                                                DbMigrator 是ABP模板主动生成的独立控制台项目，核心职责是： "执行数据库迁移(创建表/更新结构) + 执行数据播种"，

                                                是数据初始化的 "官方推荐路径"

                                                (1)、运行时机：

                                                        手动右键启动DbMigrator 项目，或通过命令执行 dotnet run 时；

                                                (2)、播种逻辑：

                                                        DbMigrator 会在迁移完成后，主动调用所有实现 IDataSeedConributor 接口的实现类的 SeedAsync 方法，

                                                        且会传递 DataSeedContext 参数标记 "由 DbMigrator 触发"；

                                                (3)、关键特定

                                                        ①、支持多租户播种 (宿主租户+ 指定租户)

                                                        ②、会记录播种状态  (避免重复执行，即使多次运行DbMigrator ，已播种的数据不会重复插入)

                                                        ③、生产环境必须通过DbMigrator 初始化数据库和数据 (避免项目自动是因权限不足、网络问题等导致播种失败)

                                    <2>、Web/API 项目启动时 (兜底方案)

                                                若你未运行 DbMigrator 项目，直接启动 Web/API 项目，ABP会在项目启动过程中触发数据播种，确保数据库有基础数据  (如角色、权限、初始配置)

                                                (1)、运行时机：

                                                        web项目启动时 （OnApplicationInitialization 阶段），且满足两个条件：

                                                             ①、数据库存在 (通过EF Core 自动迁移或手动创建)

                                                             ②、数据尚未播种  (或播种状态未记录)

                                                (2)、播种逻辑：

                                                        ABP会自动扫描所有 IDataSeedConributor 并执行，行为与 DbMigrator 中一致，但有局限

                                                (3)、局限性：

                                                        ①、生产环境不推荐一来此方式：  Web项目启动时可能因为数据库权限不足、连接超时等问题导致播种失败；

                                                        ②、多租户场景支持有限：

                                                                    默认金播种宿主租户数据，租户数据需手动处理。

                                                        ③、重复播种风险：

                                                                    若项目多次重启，可能触发重复播种  (需在SeedAsync 中手动判断数据是否已存在，如之前角色播种时的FirstOrDefaultAsync 检查)

    */
</script>